\documentclass{acm_proc_article-sp}
\usepackage{amssymb}
\usepackage{color}
\usepackage{graphicx}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{mathrsfs}
\usepackage{subfigure}
\usepackage{threeparttable}
\usepackage{multirow}
\usepackage[pdftex,pagebackref,colorlinks]{hyperref}
\usepackage{clrscode}
\begin{document}
\title{A Proposal for Article Recommendation Systems}
\subtitle{Different Recommender Systems Introductions \\and New Article Recommendation System}
\numberofauthors{3}
\author{
% 1st. author
\alignauthor
Huang Xiao\\
       \affaddr{School of Software, Tsinghua University}\\
       \affaddr{Beijing, China}\\
       \email{huangxiao09@gmail.com}
% 2nd. author
\alignauthor
Xu Hao\\
       \affaddr{School of Software, Tsinghua University}\\
       \affaddr{Beijing, China}\\
       \email{xuhao199224@gmail.com}
% 3rd. author
\alignauthor
Zhang Xiaojun\\
       \affaddr{School of Software, Tsinghua University}\\
       \affaddr{Beijing, China}\\
       \email{zhangxiaojun92@gmail.com}
}
\date{6 May 2012}

\maketitle
\begin{abstract}
This paper presents in three parts. The first part goes through an overview about the Recommender Systems. The second part of the paper illustrates some related works on the Recommender Systems and some papers introduce different ways implement the Recommender Systems. The third part comes out with an brand-new Recommender Systems to introduce new articles for users based on their interests.
\end{abstract}
\keywords{Recommender System, Collaborative Filtering, Content-based Recommendation}

\section{Collaborative filtering }

In our System, two kinds of collaborative filtering algorithm are used.

\subsection{Something about mahout}

As mentioned in the document, mahout is a open-source library which provides varies of algorithms including clustering and collaborative filtering. We tried to use the library in our program. It has many advantages. It's fast, it's easy to use, it reduces the amount of code sharply. Everything seems goes on well. However, the result it gave us is a little bit disappointing. Almost none of the recommendations were found in user-info-test.csv.
The reason seems unclear for us. We used the some of the code in our own collaborative filtering recommend system, and it works! Despite the frustrating result, mahout library is a great choice for those who don't want to learn such things.

\subsection{A DIY collaborative filtering recommend system}

Since mahout is not available in our system, we need to make a collaborative filtering recommend system by ourselves. In order to make a collaborative filtering recommend system, there are three steps: establish the model, calculate the scores of each article for a specified user and making recommendations. Now there are some brief intro to the four steps:

1a. Establishing model. It's quite easy to understand that in this step we need to parse the input data(user-info-train.csv) and calculate similarities between each users. We used an easy algorithm to calculate similarities: $ sim_{a,b} = com_{a, b} / (F_a + F_b) $. In this equation, $ com_{a,b} $ refers to the number of articles which are liked by user a and user b at the same time. $ F_a $ refers to the number of articles a liked. So is $ F_b $.

1b. However, the algorithm mentioned in 1a turned out to be wrong. Thing of this situation: user a only like 5 articles and user b like all of them. Suppose b like 100 articles. Obviously we can not assert a and b almost have nothing in similar. But according to 1a, their similarity seems very small. This led to a serious problem. In this situation, we recommend cosine similarity algorithm. (In this situation Pearson Correlation algorithm is not available because it have no ratings).

2. Calculate the scores of each article. For a specified user, there are thousands of articles to recommend. How can we choose the right ones? We can score each article, by the similarities we have just calculated. Intuitively, we can accumulate the similarities simply. For example, user a and user b have a similarity values 5, user a and user c have a similarity values 3, and both of b and c like an article named A. Then for user a, article A gets a score 5 + 3 = 8. We can choose the articles with highest scores.

3. Recommend. There is nothing to say in this part cause it's only the output part...

As explained above, that's all about our collaborative filtering recommend system.

\section{Conclusions}
We proposed six papers about recommender systems, which would be great help for our article recommendation system. All these papers provide us about some perspectives about recommender systems and the implementation of content-based and collaborative filtering. This is a pre-survey for our article recommendation system. Our system is a public concern nowadays and implementing an article recommendation system helps a lot and make our life more convenient.
\bibliographystyle{abbrv}
\bibliography{sigproc}
\end{document}
